package controlador;

import java.awt.event.*;
import java.util.Vector;

import javax.swing.ListModel;


import modelo.CargarComboCategoria;
import modelo.CargarComboIngrediente;
import modelo.CategoriaDAO;
import modelo.Ingrediente;
import modelo.IngredienteDAO;
import modelo.Producto;
import modelo.Ringre;
import modelo.RingreDAO;
import modelo.State;
import vista.AbstractFactory;
import vista.Productov;
import modelo.ProductoDAO;


public class Productoc implements ActionListener {

	      private Productov productov;
	      State state;
	      private Ingrediente ingrediente;
	  	AbstractFactory abs;
	 public Productoc(){
		 super();
		 this.productov= new Productov();
		 Vector<String> vicky=null;
		 Vector<String> victor= null;
			IngredienteDAO ingredienteDao=new IngredienteDAO();
			state=new CargarComboIngrediente();
			ingredienteDao.setState(state);
			vicky= ingredienteDao.request();
			this.productov.Cargar(vicky);
			CategoriaDAO categoriaDao= new CategoriaDAO();
			state= new CargarComboCategoria();
			categoriaDao.setState(state);
			victor=categoriaDao.request();
			ingrediente=new Ingrediente();
			abs=new Productov();
			this.productov.CargarCat(victor);
			this.productov.setLocation(480, 210);
			this.productov.setVisible(true);
			this.productov.addListener(this);
			
	 }
	 
	 public void actionPerformed(ActionEvent e) {
			String actionCommand = e.getActionCommand();
			if (actionCommand.equals("Registrar")) {
				RegistrarProducto();
			}		
			else if (actionCommand.equals("Cancelar")) {
				productov.Limpiar();
			}	
	 else if (actionCommand.equals("Añadir")){
		 productov.getTabla().Añadir(ingrediente.getCodigo(),productov.getCombo(), productov.getcantidad());
				
			}else if(actionCommand.equals("Remover"))
			{
				productov.getTabla().Eliminar(productov.Pos());
			}
}
	 
		private void RegistrarProducto(){
		  	try
			{
		    	if(productov.getcodpro().equals("") || productov.getcantidad().equals("") || productov.getprecio().equals("")||productov.getnombrepro().equals("")) 
		    		
		    	  
		    		abs.mensaje("Hay Campos vacios, por favor llene todos los campos");
		    	else
		    	{
		    		 RingreDAO ringredao=new RingreDAO();
		    		 ProductoDAO productoDAO = new ProductoDAO();
				    	Producto producto = new Producto(productov.getcodpro(),productov.getnombrepro(),Float.valueOf(productov.getprecio()));
				    	productoDAO.Registrar(producto);		    
				        int i=productov.getTabla().getRowCount();
				        for(int j=0; j<i;j++)
				        {
				        Ringre ringre =new Ringre(productov.getcodpro(),ingrediente.getCodigo(), Double.parseDouble(String.valueOf(productov.getTabla().getValueAt(j, 2))));
				        ringredao.Registrar(ringre);
				        }
				    productov.getTabla().Limpiar();
			    	abs.mensaje("El Producto fue incluido con exito");
			    	productov.Limpiar();
		    	}
			}catch(Exception e)
			{
				abs.mensaje("El Producto no ha sido registrado, verifique los datos");
			  	productov.Limpiar();
			}
		
		}
		}